Moving a position of interest on a display

ABSTRACT

One or more processors determine in which level, among a plurality of levels of a structured object displayed on a display device, a position of interest is currently located. The plurality of levels, which includes a first level and a second level, are in a hierarchy or corresponding to a multi-dimensional coordinate space. In response to determining that the position of interest is currently located in the first level: the one or more processors determine, based on the hierarchy or the multi-dimensional coordinate space, a next location in the second level of the structured object. The next location is a prediction of where a user will choose to move the position of interest subsequently from the current location. The one or more processors generate first display data that, when displayed by the display device, shows the position of interest at the next location in the second level.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation application of U.S. patentapplication Ser. No. 15/828,094, now U.S. Pat. No. 10,908,768, entitled“User Interface for Selecting Elements of a Structured Object,” filed onNov. 30, 2017, which is a continuation application of U.S. patentapplication Ser. No. 15/044,182, now U.S. Pat. No. 10,120,525, entitled“Positioning Pads for Moving a Position of Interest on a Display,” filedon Feb. 16, 2016, which is a continuation application of U.S. patentapplication Ser. No. 14/216,498, now U.S. Pat. No. 9,262,070, entitled“Positioning Pads for Moving a Position of Interest on a Display,” filedon Mar. 17, 2014, which claims the benefit of U.S. Provisional PatentApplication No. 61/788,994, entitled “Positioning Pads for Moving aPosition of Interest on a Display,” filed on Mar. 15, 2013. All of theapplications referenced above are hereby incorporated by referenceherein in their entireties.

FIELD OF THE DISCLOSURE

The present disclosure relates generally to user interfaces for use withcomputer display devices and, more particularly, to a user interface formoving a position of interest regarding a structured object beingdisplayed on a display device.

BACKGROUND

There has recently been a large increase in the number of users who usetouch screen based devices as a secondary or even primary computingdevice. However, certain computer paradigms which were designed for userinput via keyboard and mouse are still being used in a primarily touchscreen based interface. For example, software operating systems whichprimarily utilize a touch input still use a “cursor” to display aposition of interest in a text input box. However, use of a human finger(or stylus) to select a position on a touch screen is not as accurate asa mouse—while a mouse can be used to select a position of interest on apixel-by-pixel basis, human digits are too large to make similarlygranular selections—especially when the screen size is relatively small(such as on a tablet computer or a smart phone). Furthermore, capacitivescreen hardware predominantly used in modern touch-based devices is ofvarying quality, with high-quality screens providing better accuracythan their lower-quality counterparts. Thus, the inherent clumsiness ofhuman digits and irregular surface capacitivity can create problems whena user is trying to move a position of interest (e.g., move a cursor) toa different location. When a user wants to move the cursor, it may takethe user several presses on a touch screen to get the cursor to thedesired location, leading to frustration and/or loss of concentration.

This difficulty is especially troublesome when inputting complexmathematical or numerical expressions, such as when using a calculatorapplication, a spreadsheet application, etc. For example, mathematicalexpressions often utilize a plurality of sets of parentheses or bracketsto specify the grouping of terms, to specify the precedence ofoperations, to set apart the arguments of a function from the functionitself, etc. When editing a mathematical expression, it can be difficultto place a cursor at a desired location using a touch screen. Forexample, when the expression has two adjacent parentheses correspondingto nested parentheses and the user wants to add text between the twoparentheses, it can be difficult to use the touch screen to place thecursor between the two parentheses. It may take the user several pressesor touch screen operations to move the cursor to the desired location,and thus the user may become frustrated with an application over time.

Additionally, new types of display devices (e.g., 3-dimensional (3D)displays) and user interface devices (e.g., motion detection devicesthat detect spatial gestures) are becoming more common. Existingtechniques for navigating cursors have drawbacks in the context of suchnew types of display and user interface devices.

SUMMARY OF THE DISCLOSURE

In an embodiment, a method includes: determining, at one or moreprocessors, in which level, among a plurality of levels of a structuredobject displayed on a display device, a position of interest iscurrently located, wherein the plurality of levels are in a hierarchy orcorresponding to a multi-dimensional coordinate space, and wherein theplurality of levels includes a first level and a second level; and inresponse to the one or more processors determining that the position ofinterest is currently located in the first level: determining, at theone or more processors and based on the hierarchy or themulti-dimensional coordinate space, a next location in the second levelof the structured object, the next location being a prediction, based onthe hierarchy or the multi-dimensional coordinate space, of where a userwill choose to move the position of interest subsequently from thecurrent location, and generating, at the one or more processors, firstdisplay data that, when displayed by the display device, shows theposition of interest at the next location in the second level.

In another embodiment, an apparatus comprises: one or more processors;and one or more memory devices coupled to the one or more processors.The one or more memories store machine readable instructions that, whenexecuted by the one or more processors, cause the one or more processorsto: determine in which level, among a plurality of levels of astructured object displayed on a display device, a position of interestis currently located, wherein the plurality of levels are in a hierarchyor corresponding to a multi-dimensional coordinate space, and whereinthe plurality of levels includes a first level and a second level; andin response to the one or more processors determining that the positionof interest is currently located in the first level: determine, based onthe hierarchy or the multi-dimensional coordinate space, a next locationin the second level of the structured object, the next location being aprediction, based on the hierarchy or the multi-dimensional coordinatespace, of where a user will choose to move the position of interestsubsequently from the current location, and generate first display datathat, when displayed by the display device, shows the position ofinterest at the next location in the second level.

In yet another embodiment, one or more tangible, non-transitory computerreadable media, store machine readable instructions that, when executedby one or more processors, cause the one or more processors to:determine in which level, among a plurality of levels of a structuredobject displayed on a display device, a position of interest iscurrently located, wherein the plurality of levels are in a hierarchy orcorresponding to a multi-dimensional coordinate space, and wherein theplurality of levels includes a first level and a second level; and inresponse to the one or more processors determining that the position ofinterest is currently located in the first level: determine, based onthe hierarchy or the multi-dimensional coordinate space, a next locationin the second level of the structured object, the next location being aprediction, based on the hierarchy or the multi-dimensional coordinatespace, of where a user will choose to move the position of interestsubsequently from the current location, and generate first display datathat, when displayed by the display device, shows the position ofinterest at the next location in the second level.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an example computing device having adisplay and a touch screen, the computing device utilizing cursorpositioning pads for moving a cursor on the display, according to anembodiment.

FIG. 2 is an illustration of an example graphical user interface of acalculator application with an input field and at least one cursorpositioning pad, according to an embodiment.

FIGS. 3A and 3B are illustrations of another example graphical userinterface of a calculator application with an input field and at leastone cursor positioning pad, according to an embodiment.

FIGS. 4A-4C are illustrations of an example graphical user interface ofa calculator application with an input field and at least one cursorpositioning pad, according to an embodiment.

FIG. 5A is an illustration of an example display of a calculatorapplication with an expression and multiple cursor positioning pads,according to an embodiment.

FIG. 5B is a diagram of an example multi-dimensional structurecorresponding to the expression illustrated in FIG. 5A, according to anembodiment.

FIG. 6 is a flow diagram of an example method for facilitating movementof a position of interest with positioning pads, according to anembodiment.

FIGS. 7A and 7B are a flow diagram of an example method for moving acursor within an input field, according to an embodiment.

FIGS. 8A-8D are illustrations of an example display that may be shown ina display of a calculator application, according to an embodiment.

FIGS. 9A-9D are illustrations of an example display that may be shown ina display of a calculator application, according to an embodiment.

FIGS. 10A-10C are illustrations of an example display that may be in adisplay of a calculator application, according to an embodiment.

DETAILED DESCRIPTION

FIG. 1 is a block diagram of an example computing device 100 that canused to view and interact with applications having an input field, i.e.,an area, displayed on a display screen of the device 100, in which text(e.g., alphanumeric characters) and optionally other information can beinput, according to an embodiment. Techniques for enhancing the abilityto move a position of interest (e.g., a position of a cursor) to adesired location on a structured object (e.g., a mathematical expressionin an input field) quickly and easily are described in the context ofthe example computing device 100 for explanatory purposes. Similartechniques, however, can be utilized in other types of devices as well.For example, although the device 100 includes a 2-dimensional (2D)display, in other embodiments, a computing device utilizes a suitabledisplay device other than a 2D display. As another example, although thedevice 100 includes a touch screen, in other embodiments, a computingdevice utilizes a suitable user input device other than a touch screen.

The device 100 includes a central processing unit (CPU) 104 coupled to amemory 108 (which can include one or more non-transitory, tangiblecomputer readable storage media such as random access memory (RAM), readonly memory (ROM), flash memory, a hard disk drive, a digital versatiledisk (DVD) disk drive, a Blu-ray disk drive, etc.). The device 100 alsoincludes an input/output (I/O) processor 112 that interfaces the CPU 104with a display device 116 and a touch-sensitive device (or touch screen)120. In some embodiments the touch-sensitive device is a multi-touchtouch screen; however embodiments of the present application areenvisioned for use with devices using various suitable touch screentechnologies such as a single-touch touch screen. The I/O processor 112also interfaces one or more additional I/O devices 124 to the CPU 104,such as one or more buttons, click wheels, a keypad, a touch pad,another touch screen (single-touch or multi-touch), lights, a speaker, amicrophone, etc.

A network interface 128 is coupled to the CPU 104 and to an antenna 132.A memory card interface 136 is coupled to the CPU 104. The memory cardinterface 136 is adapted to receive a memory card such as a securedigital (SD) card, a miniSD card, a microSD card, a Secure Digital HighCapacity (SDHC) card, etc., or any suitable card.

The CPU 104, the memory 108, the I/O processor 112, the networkinterface 128, and the memory card interface 136 are coupled to one ormore busses 136. For example, the CPU 104, the memory 108, the I/Oprocessor 112, the network interface 128, and the memory card interface136 are coupled to a bus 136, in an embodiment. In another embodiment,the CPU 104 and the memory 108 are coupled to a first bus, and the CPU104, the I/O processor 112, the network interface 128, and the memorycard interface 136 are coupled to a second bus. In other embodiments,various other suitable bus architectures are utilized.

The device 100 is only one example of a computing device 100, and othersuitable devices can have more or fewer components than shown, cancombine two or more components, or a can have a different configurationor arrangement of the components. The various components shown in FIG. 1can be implemented in hardware, by a processor executing softwareinstructions, or by a combination of both hardware and processorexecuting software instructions software, including one or more signalprocessing and/or application specific integrated circuits. Furthermore,the device 100 may be a mobile computing device (such as a mobile phone,tablet, e-reader, etc.), a desktop computer, laptop computer or othercomputing device. Alternatively, the device 100 may be a single purposecomputing device, such as a touch screen based calculator.

The CPU 104 executes computer readable instructions stored in the memory108. The I/O processor 112 interfaces the CPU 104 with input and/oroutput devices, such as the display 116, the touch screen 120, and otherinput/control devices 124. The I/O processor 112 can include a displaycontroller (not shown) and a touch screen controller (not shown). Thetouch screen 120 includes one or more of a touch-sensitive surface and asensor or set of sensors that accepts input from the user based onhaptic and/or tactile contact. The touch screen 120 utilizes one or moreof currently known or later developed touch sensing technologies,including one or more of capacitive, resistive, infrared, and surfaceacoustic wave technologies, as well as other proximity sensor arrays orother elements for determining one or more points of contact with thetouch screen 120. In an embodiment, the touch screen 120 and the I/Oprocessor 112 (along with any associated modules and/or sets ofinstructions stored in memory 102 and executed by the CPU 104) candetect multiple points of or instances of simultaneous contact (and anymovement or breaking of the contact(s)) on the touch screen 120. Suchdetected contact can be converted by the CPU 104 into interaction withuser-interface that is displayed on the display 116. A user can makecontact with the touch screen 120 using any suitable object orappendage, such as a stylus, a finger, etc.

The network interface 128 facilitates communication with a wirelesscommunication network such as a wireless local area network (WLAN), awide area network (WAN), a personal area network (PAN), etc., via theantenna 132. In other embodiments, one or more different and/oradditional network interfaces facilitate wired communication with one ormore of a local area network (LAN), a WAN, another computing device suchas a personal computer, a server, etc. In some embodiments having one ormore additional network interfaces, the device 100 includes one or moreadditional antenna.

Software components (i.e., sets of computer readable instructionsexecutable by the CPU 104) are stored in the memory 108. The softwarecomponents can include an operating system, a communication module, acontact module, a graphics module, and applications such as a calculatorapplication, spreadsheet application, word processing application,e-mail application or other applications having a text input area, i.e.,an area displayed on the display 116 in which text (e.g., alphanumericcharacters) can be input. The operating system can include varioussoftware components and/or drivers for controlling and managing generalsystem tasks (e.g., memory management, etc.) and can facilitatecommunication between various hardware and software components. Thecommunication module can facilitate communication with other devices viathe network interface 128.

The contact module can detect contact with touch screen 120 (inconjunction with the I/O processor 112). The contact module can includevarious software components for performing various operations related todetection of contact, such as determining if contact has occurred anddetermining if the contact has been broken (i.e., if the contact hasceased). In some embodiments, the contact module may include componentsfor determining if there is movement of the contact and tracking themovement across the touch screen 120. Determining movement of the pointof contact can include determining speed (magnitude), velocity(magnitude and direction), and/or an acceleration (a change in magnitudeand/or direction) of the point of contact. These operations can beapplied to single contacts (e.g., one finger contacts) or to multiplesimultaneous contacts (e.g., “multi-touch”/multiple finger contacts), insome embodiments.

In an embodiment, the device 100 includes a calculator application. Thecalculator application is configured to enable input, via an inputfield, of arbitrarily complex expressions that can then be evaluated bythe calculator application to generate a result, which is then displayedon the display 116. For example, in some embodiments, a user can inputan expression that includes brackets or parentheses to group terms, tospecify precedence of operations, etc. As another example, in someembodiments, the calculator application provides for the use ofpreconfigured functions within the input expression, and brackets orparentheses are used to denote the arguments of the function. As usedherein, the term “brackets” refers to a pair of punctuation marks usedto group text within the pair of punctuation marks and to set apart thetext within the brackets from text outside of the brackets. Examples ofbrackets includes square brackets ([ ]), round brackets or parentheses(( ), curly brackets ({ }), chevrons (< >), etc. Thus, as used herein,“parentheses” are an example of a type of “bracket”. Examples aredescribed below are in the context of parentheses, but the techniquesare applicable to other types of brackets as well.

A mathematical expression entered via an input field is an example of astructured object having a plurality of levels in a hierarchy. Forexample, in an expression having nested brackets including a first setof brackets within a second set of brackets, a hierarchy in theexpression may include a first level within the first set of brackets, asecond level outside of the first set of brackets and within the secondset of brackets, and a third level outside the second set of brackets.In this example and according to an embodiment, the second level isabove the first level in the hierarchy, and the third level is above thesecond level in the hierarchy.

FIG. 2 is a diagram of an example graphical user interface 200 of acalculator application, according to an embodiment. In an embodiment, acalculator application having the graphical user interface 200 isimplemented on the device 100 of FIG. 1, and the calculator applicationand the graphical user interface 200 are discussed with reference toFIG. 1 for explanatory purposes. In other embodiments, however, thecalculator application having the graphical user interface 200 isimplemented on another suitable device.

The user interface 200 is displayed on the display 116, in anembodiment. The user interface 200 includes an input field 204 in whicha user can enter an input expression to be evaluated by the calculatorapplication. The user interface 200 also includes a region 206 withbuttons for selecting alphanumeric text, mathematical symbols,functions, etc., to then be displayed in the input field 204.

The buttons in the region 206 may correspond to, for example, numbers,symbols, operations, functions and other marks that can be used tocreate an expression to be evaluated by the calculator application. Whena user presses, via the touch screen 120, one of the buttons on the userinterface 200, the touch screen 120 registers a user input and sends asignal to be interpreted by the operating system software and/or thecalculator application to display the user input in the input field onthe display 116. For example, in response to the user pressing a numberbutton (e.g., the number five), the calculator application displays thecorresponding number in the input field 204 at a current location of acursor, and the cursor 212 is then advanced to a next adjacent inputlocation to the right. As another example, in response to the userpressing the button 208, the calculator application displays a pair ofparentheses 216 in the input field 204 at a current location of thecursor 212, and the cursor 212 is then moved to within the pair ofparentheses 216. As another example, in response to the user pressingthe button 220, the calculator application displays the text “sin( )” inthe input field 204 at a current location of the cursor 212, where “sin”indicates a preset or preconfigured function of the calculator and theparentheses in “sin( )” denotes arguments of the “sin” function. Thecursor 212 is then moved to within the pair of parentheses in the “sin()”. It is to be noted that the user input is not limited to signalsreceived from user input on the touch screen, but may be signalsreceived from a user pressing a button on a separate display or othercomponent such as a hardware keyboard connected to the device via awired or wireless connection. Wireless connections include, but are notlimited to, infrared, PAN connections, WLAN connections, etc.

The area 206 also includes a button 224 to cause the calculatorapplication to evaluate the input expression entered in the input field204. The result of the evaluation is displayed in a result field 224.

As illustrated in FIG. 2, a mathematical expression 230 has been enteredby the user and is displayed in the input field 204. The expression 230includes a sub-expression within the parentheses 216. The cursor 212indicates the current input location, i.e., the location at which a newinput will be entered in the field 204. For example, as illustrated inFIG. 2, the current input location is immediately to the right of thenumber three.

The mathematical expression 230 is a structured object having aplurality of levels in a hierarchy. For example, the hierarchy mayinclude a first level within the parentheses 216, and a second leveloutside of the parentheses 216. In an embodiment, the second level isabove the first level in the hierarchy.

In some embodiments, a cursor positioning pad module of, or associatedwith, the calculator application is configured to analyze themathematical expression 230 to determine the plurality of levels in thehierarchy of the mathematical expression 230 (e.g., the first level andthe second level). Additionally, the cursor positioning pad module isconfigured to determine in which level the current input location islocated, in an embodiment. For example, in FIG. 2, the cursor 212 islocated in the first level. Further, the cursor positioning pad moduleis configured to determine one or more predicted locations in otherlevels of where the user may choose to move the cursor subsequently fromthe current location.

A first cursor positioning pad 234 is displayed in the input field 204.Cursor positioning pads, like the first cursor positioning pad 234, aregenerally for facilitating changing the current input location in anexpression displayed in the input field 204 to a predicted locationwhere the user may choose to move the cursor subsequently from thecurrent location. For example, in the example illustrated in FIG. 2,when the user presses the first cursor positioning pad 234, the currentinput location is moved from within the parentheses 216 to outside ofthe parentheses 216, in particular to a location immediately to theright of the parenthesis 216 b. In embodiments utilizing a touch screen,cursor positioning pads generally have a shape configured to enable easyselection via the touch screen. For example, in one embodiment, thefirst cursor positioning pad 234 is a square having a width of about ⅓″.In other embodiments, however, other suitable shapes and sizes areutilized. Other suitable shapes that may be utilized include rectangles,circles, ovals, etc. Additionally, the size and/or shape of the cursorpositioning pad may vary depending on one or more of the size of thedisplay 116, the location of the cursor positioning pad within the field204, the information adjacent to the cursor positioning pad, the amountof information being displayed within the field 204, etc., in variousembodiments.

In some embodiments, a cursor positioning pad is located at or proximateto the location to which the current input location will be moved. Forexample, in the example illustrated in FIG. 2, the first cursorpositioning pad 234 is located generally where the current inputlocation will be moved, e.g., to the location immediately to the rightof the parenthesis 216 b. In other embodiments, the cursor positioningpad is located at a position spaced apart from where the current inputlocation will be moved, but a visual indicator is displayed, the visualindicator configured to visually associate the cursor positioning padwith the location where the current input location will be moved inresponse to pressing the cursor positioning pad. For example, the visualindicator may be a line, displayed on the display 116, that connects thecursor positioning pad with the new location, or a line connected to orotherwise visually linked to the cursor positioning pad and thatvisually points to the new location. In some embodiments, the visualindicator includes a line with an end point at or proximate to the newlocation. In an embodiment, the line includes an arrow head, a roundedend point, etc.

In some embodiments, the cursor positioning pad enables the user tochange a position of the current input location from a first area of theinput expression to a second area of the input expression. For example,in the illustration of FIG. 2, the first area may be the area of theexpression 230 within the parentheses 216 and the second area may be thearea of the expression 230 to the right of the parenthesis 216 b. If thecurrent input location, represented by the cursor 212, is in the firstarea of the input expression 230 (e.g., within the parentheses 216) anda user desires to move the cursor 212 to within the second area of theinput expression 230 (e.g., outside of the parentheses 216 and to theright of the parenthesis 216 b (for example to further add to the inputexpression), the user may press the first cursor positioning pad 234.The user input is then registered by the touch screen device which, inresponse, sends a signal to the to the calculator application 200 (e.g.,directly or via the operating system).

The calculator application 200 receives the signal indicating selectionof the first cursor positioning pad 234. In response, the calculatorapplication 200 recognizes the user input and moves the current inputlocation, represented by the cursor 220, outside of the first area ofthe parentheses 216 and to the right of the parenthesis 216 b.

When the cursor is outside of the parentheses 216, the first cursorpositioning pad 234 is no longer displayed on the display 116 (e.g., thefirst cursor positioning pad 234 is removed from the display 116). Atthis point the user may continue to edit the input expression 230 byadding to the input expression to the right of the parenthesis 216 b. Insome embodiments, if the user later positions the cursor back within theparentheses 216, the first cursor positioning pad 234 is redisplayed toallow the user to subsequently change the current input location tooutside of the parentheses 216 and to a location at the right-mostposition in the input expression 230 to allow the user to subsequentlychange the current input location to the rightmost position in the inputexpression 230.

In some embodiments in which information has been added to the right ofthe parenthesis 216 b and when the user later positions the cursor backwithin the parentheses 216, a second cursor positioning pad (not shown)is displayed at, or associated with, a location immediately to the rightof the parenthesis 216 b to allow the user to subsequently change thecurrent input location immediately to the right of the parenthesis 216b. The second cursor positioning pad (not shown) is displayed inaddition to or instead of the first cursor positioning pad 234 at, orassociated with, the rightmost position in the input expression 230, insome embodiments and/or scenarios.

In an embodiment, when the first cursor positioning pad 234 is selectedby the user, a third cursor positioning pad (not shown in FIG. 2) isthen displayed within the parentheses 216 (or otherwise associated witha location within the parentheses 216 (e.g., displayed in connectionwith a line to indicate the location within the parentheses 216). If theuser wishes to once again add information within the parentheses 216,the user can press the third cursor positioning pad (not shown). Theuser input is then registered by the touch screen device which, inresponse, sends a signal in to the calculator application 200 (e.g.,directly or via the operating system). The calculator application 200receives the signal and interprets the signal. In response, thecalculator application 200 recognizes the user input and moves thecurrent location, represented by the cursor 212, to back within theparentheses 216, e.g., to a location immediately to the left of theparenthesis 216 b.

In some embodiments, the user can move the cursor 212 independently ofthe cursor positioning pad 234, e.g., by one or more of pressing thetouch screen 120 at a new location within the expression 230, draggingthe cursor 212 to a new location, using arrow buttons (not shown), etc.Thus, in some embodiments and/or scenarios, if the user moves the cursor212 outside of the parentheses 216 using a mechanism other than thecursor positioning pad 234 (e.g., using an arrow button (not shown)),the first cursor positioning pad 234, in response to determining thatthe cursor 212 has been moved into the second level of the hierarchy ofthe structured object 230, is no longer displayed on the display 116(e.g., the first cursor positioning pad 234 is removed from the display116). In an embodiment, the third cursor positioning pad (not shown inFIG. 2) discussed above, in response to determining that the cursor 212has been moved outside of the parentheses 216 and into the second level,is then displayed within the first level, e.g., within the parentheses216, or otherwise associated with a location within the parentheses 216.

In some embodiments, the user may select a cursor positioning pad 234indirectly, e.g., without touching the cursor positioning pad 234 (inembodiments using a touch screen). For example, a user may make aselection via a graphical user interface element located outside of theinput field 204, yet within the touch screen 120, as in an embodiment inwhich a selection menu or other user interface mechanism (not shown)with a multi-level structure identical to, or mimicking, that of thestructured object 230, but with visual characteristics that aredifferent than the object 230, is displayed. Additionally, anapplication 200 may, for example, provide an application programminginterface (API) by which a client application may programmaticallyselect cursor positioning pads, in an embodiment.

FIGS. 3A and 3B are illustrations of portion of an example graphicaluser interface 300, according to an embodiment. In an embodiment, acalculator application having the graphical user interface 300 isimplemented on the device 100 of FIG. 1, and the calculator applicationand the graphical user interface 300 are discussed with reference toFIG. 1 for explanatory purposes. In other embodiments, however, thecalculator application having the graphical user interface 300 isimplemented on another suitable device.

The calculator application causes the graphical user interface 300 to bedisplayed on the display 116. The user interface 300 includes an inputfield 304 in which a user can enter an input expression to be evaluatedby the calculator application. The user interface 300 also includes anarea, only some of which is shown in FIGS. 3A and 3B, with buttons forselecting alphanumeric text, mathematical symbols, functions, etc., tothen be displayed in the input field 304. The graphical user interface300 may be the same as or similar to the graphical user interfaceillustrated in FIG. 2, in some embodiments. In FIGS. 3A and 3B, an inputexpression 308 has been entered by the user in the field 304.

The input expression 308 has a first area 312 within parentheses 316, asecond area 320, outside of parentheses 316 but within parentheses 324,and a third area 328 outside of both parentheses 316 and parentheses324, and to the right of parenthesis 324 b. The parentheses 316 andparentheses 324 are nested, and in particular, the parentheses 316 arewithin the parentheses 324.

The mathematical expression 308 is a structured object having aplurality of levels in a hierarchy. For example, the hierarchy mayinclude a first level within the parentheses 316, a second level outsideof the parentheses 316 and within the parentheses 324, and a third leveloutside of the parentheses 324. In an embodiment, the third level isabove the second level in the hierarchy, and the second level is abovethe first level in the hierarchy.

A current input location is indicated by a cursor 332. As illustrated inFIG. 3A, the current input location is within the parentheses 316, i.e.,in the first level of the hierarchy. A first cursor positioning pad 336is displayed in the second level, e.g., outside of the parentheses 316,to the right of the parenthesis 316 b, and to the left of theparenthesis 324 b. A second cursor positioning pad 340 is displayed inthe third level, e.g., outside of both the parentheses 316 and theparentheses 324, to the right of the parenthesis 324 b.

If the current input location, represented by the cursor 332, is withinthe first area 312 (and in the first level in the hierarchy) and theuser desires to move the current input location to within the secondlevel, the user may press the first cursor positioning pad 336. Inresponse to this press, the calculator application may determine thatthe user selected the first cursor positioning pad 336 in a manner suchas described above. In response, the calculator application recognizesthe user input and moves the current input location, represented by thecursor 332, outside of the first area 312 to within the second level inthe hierarchy, in particular to between the parenthesis 316 b and theparenthesis 324 b. When the cursor is within the second level of thehierarchy of the structured expression 308, the first cursor positioningpad 336 is no longer displayed.

FIG. 3B illustrates the portion of the graphical user interface 300after the user has selected the first cursor positioning pad 336. As canbe seen in FIG. 3B, the first cursor positioning pad 336 is no longerdisplayed (e.g., it is removed from the graphical user interface 300).Additionally, the calculator application caused the current inputlocation to be moved to outside of the first area 308 (in the firstlevel of the hierarchy) to within the second area 320 (in the secondlevel of the hierarchy) of the input expression, and in particular, to alocation between the parenthesis 316 b and the parenthesis 324 b. Insome embodiments, a third cursor positioning pad (not shown) is alsothen displayed in, or otherwise visually associated or connected with,the first area 308 (in the first level of the hierarchy) of the inputexpression 308. For example, in one embodiment, the third cursorpositioning pad is displayed at a location immediately to the left ofthe parenthesis 316 b.

At this point, the user may continue to edit the second area 320 (in thesecond level) of the mathematical structure 302. If the user wishes toonce again edit the first area 308 (in the first level) of themathematical structure 302, the user can press the third cursorpositioning pad (not shown) to move the current input location to withinthe first area 308.

On the other hand, if the user desires to edit the third area 328 (inthe third level of the hierarchy) of the input expression 308, the usercan touch the second cursor positioning pad 340. In response to thispress the calculator application may determine that the user selectedthe second cursor positioning pad 340 in a manner such as describedabove. In response, the calculator application 300 recognizes the userinput and moves the current input location, represented by the cursor332, to outside of the second area 320 to within the third area 328.When the current location, represented by the cursor 332, is within thethird area 328 (in the third level of the hierarchy), the second cursorpositioning pad 340 is not displayed in the graphical user interface300. In some embodiments, the first cursor positioning pad 336 is thendisplayed in the second area 308 (in the second level of the hierarchy)of the mathematical structure 302, and/or the third cursor positioningpad (discussed above) is also displayed within the within the first area308 (in the first level of the hierarchy) of the input expression.

In some embodiments, the user can move the cursor 332 without using acursor positioning pad by, for example, one or more of pressing thetouch screen 120 at a new location within the expression 308, draggingthe cursor 332 to a new location, using arrow buttons (not shown), etc.Thus, in some embodiments and/or scenarios, if the user moves the cursor332 to within the second area 320 (in the second level of the hierarchy)using a mechanism other than the first cursor positioning pad 336 (e.g.,using an arrow button (not shown)), the first cursor positioning pad336, in response to determining that the cursor 332 has been moved towithin the second area 320 (in the second level of the hierarchy), is nolonger displayed on the display 116 (e.g., the first cursor positioningpad 336 is removed from the display 116). In an embodiment, the thirdcursor positioning pad (not shown in FIGS. 3A and 3B) discussed above,in response to determining that the cursor 332 has been moved outside ofthe first area 312 (in the first level of the hierarchy), is thendisplayed within the parentheses 316 in the first level of the hierarchy(or otherwise visually connected or associated with a location withinthe parentheses 316).

The cursor positioning pad module may be configured to predict one ormore likely positions within the input expression to which the user maywish to move the current input location (as indicated by a cursor).Predictions of likely positions may be generated based on one or more of(i) the current input location, (ii) the mathematical elements orfunctions already entered into the input expression, (iii) the currentstructure of the input expression (e.g., the nesting structure ofbrackets, functions, etc.). For example, generation of predictions mayinclude applying rules to the current input expression. For example, afirst rule may be that, when the cursor is currently located within alevel of a structured expression having a plurality of levels in ahierarchy, the user will likely wish to move the cursor to one or moredifferent levels in the hierarchy. As another example, a second rule maybe that, when the cursor is currently located within a current level inthe hierarchy, the user will likely wish to move the cursor to one ormore higher levels (i.e., one or more levels above the current level) inthe hierarchy. As a further example, a third rule may be that, when auser wishes to move the cursor from one level to another, the user willlikely wish to move the cursor to the rightmost position in the otherlevel. As a further example, a fourth rule may be that, when a userwishes to move the cursor from one level to another, the user willlikely wish to move the cursor to the leftmost position in the otherlevel.

As another example, a fifth rule may be that, when the input expressionincludes a pair of brackets and the current input location is within thebrackets, the user will likely wish to move the cursor outside of thebrackets to a position immediately to the right of the right-handbracket. A sixth rule may be that, when the input expression includes apair of brackets and the current input location is outside of thebrackets, the user will likely wish to move the cursor back inside thebrackets to a position immediately to the left of the right-handbracket.

FIGS. 4A-4C are illustrations of a portion of an example graphical userinterface 400, according to an embodiment. In an embodiment, acalculator application having the graphical user interface 400 isimplemented on the device 100 of FIG. 1, and the calculator applicationand the graphical user interface 400 are discussed with reference toFIG. 1 for explanatory purposes. In other embodiments, however, thecalculator application having the graphical user interface 400 isimplemented on another suitable device.

The calculator application causes the graphical user interface 400 to bedisplayed on the display 116. The user interface 400 includes an inputfield 402 in which a user can enter an input expression to be evaluatedby the calculator application. The user interface 400 also includes anarea, only some of which is shown in FIGS. 4A and 4B, with buttons forselecting alphanumeric text, mathematical symbols, functions, etc., tothen be displayed in the input field 402. The graphical user interface300 may be the same as or similar to the graphical user interfaceillustrated in FIG. 2, in some embodiments.

FIGS. 4A-4C illustrate an input expression 404 entered by the user inthe field 402 at various stages. For example, in FIG. 4A, the user hasentered a first function 406 (e.g., a “prime factors” function) having afirst function argument area 412. Within the first function argumentarea 412 of the first function 406 is a cursor 414 representing acurrent input location within the input field 402. The current inputlocation in the input field 402 is the point where the next user inputwill be entered.

In the illustration of FIG. 4A, the first function argument area 412corresponds to a first area of the expression 404 and a second area 416of the expression corresponds to a position outside of the first area412 and to the right of the first function 406. A first cursorpositioning pad 420 is displayed within the second area 416. Theexpression 404 is a structured expression having a plurality of levelsin a hierarchy, including a first level and a second level. For example,the first level corresponds to the area 412 and the second levelcorresponds to the area 416. The second level is above the first levelin the hierarchy.

If a user wishes to edit the second area 416 of the input expression404, the user may press the first cursor positioning pad 420 whichcauses the current input location to move to the second area 416 in thesecond level of the hierarchy (e.g., just to the right of the function406) and to move the cursor 414 to the corresponding new position of thecurrent input location. Alternatively, the user may wish to enter anadditional function within the first argument area 412 of the firstfunction 406.

Turning now to FIG. 4B, a user has input a second function 424 (e.g., an“integer part” function) within the first argument area 412 of the firstfunction 406. The second function 424 is nested within the firstfunction 406. In a second function argument area 428 of the secondfunction 424, a user has input a first text input 432. The current inputlocation, represented by the cursor 414, is displayed within the secondfunction argument area 428 of the second function 424. The hierarchy ofthe structured expression 404 now includes a third level correspondingto the area 428. The third level is below the first level (e.g., withinthe area 412 but outside of the second function 424) in the hierarchy.

The first cursor positioning pad 420 remains displayed in the secondarea 416. Additionally, a second cursor positioning pad 424 is nowdisplayed within the first function argument area 412 and outside of thesecond function argument area 428.

If the user desires to input additional text, such as a number, symbol,function, etc., within the first function argument area 412 of the firstfunction 408, the user may press the second cursor positioning pad 436.The calculator application may determine that the user selected thesecond cursor positioning pad 436 in a manner such as described above.In response, the calculator application recognizes the user input andmoves the current input location, represented by the cursor 414, outsideof the second argument area 428 to the first function argument area 412.

FIG. 4C illustrates the graphical user interface 400 after the userselected the second cursor positioning pad 436. The second cursorpositioning pad 436 is no longer displayed, and the user input locationand the cursor 414 have been moved outside of the second functionargument area 428 to the first function argument area 412. The firstcursor positioning pad 420 remains displayed within the second area 416.

If the user desires to input text into the second area 416 of the inputexpression, the user may press the first cursor positioning pad 420. Thecalculator application may determine that the user selected the firstcursor positioning pad 420 in a manner such as described above. When thecalculator application 400 recognizes the user input, it may move thecurrent input location, represented by the cursor 414, to the secondarea 416 of the mathematical structure 404. Additionally, first cursorpositioning pad 420 is no longer displayed. In some embodiments and/orimplementations, the second cursor positioning pad 436 is redisplayedwithin the first function argument area 412.

As discussed above, the calculator application may be configured topredict one or more likely positions within the input expression towhich the user may wish to move the current input location (as indicatedby a cursor), and such predictions may be generated based on rules suchas: when the input expression includes a function with an argument area,and the current input location is within the argument, the user willlikely wish to move the cursor outside of the argument area to aposition immediately to the right of the function. Another example ruleis: when the input expression includes a function with an argument areaand the current input location is outside of the argument area, the userwill likely wish to move the cursor back inside the argument area to aright-most position in the argument area, a left-most position withinthe argument area, etc.

Although the examples described above involve hierarchies, similartechniques may be utilized with expressions having a structure in amulti-dimensional coordinate space. For instance, FIG. 5A illustrates anexample expression 500 that may be displayed on a display device by anapplication such as the calculator application described above. Theexpression 500 includes a first area 504 between an integral sign 508and a symbol 512. The first area 504 corresponds to a first levelassociated with a first coordinate pair. The expression 500 includes asecond area 516 corresponding to an upper limit of the integral. Thesecond area 516 corresponds to a second level associated with a secondcoordinate pair. The expression 500 includes a third area 520corresponding to a lower limit of the integral. The third area 520corresponds to a third level associated with a third coordinate pair.The expression 500 also includes a fourth area outside of the integral.The fourth area corresponds to a fourth level associated with a fourthcoordinate pair.

FIG. 5B is a diagram illustrating an example structure 540 correspondingto the expression 500, according to an embodiment. In the structure 540,the first level is associated with a first coordinate pair (x₁,y₁), thesecond level is associated with a second coordinate pair (x₂,y₂), thethird level is associated with a third coordinate pair (x₃,y₃), and thefourth level is associated with a fourth coordinate pair (x₄,y₄). In anembodiment, x₂ equals x₃, and y₁ equals y₄.

Various suitable rules for determining one or more predictions of one ormore levels to which a user may wish to navigate the input position maybe utilized, where predictions are determined based on the level inwhich the input position is currently located. For example, in theillustration of FIG. 5A, a cursor (not shown) is located in the firstarea 504 (corresponding to the first level/first coordinate pair). Thecursor positioning pad module, in response to determining the cursor isat the first levels/coordinate pair, may predict locations to which theuser may wish to subsequently navigate the cursor, such locationscorresponding to the second, third, and fourth levels/coordinate pairs.Then, the cursor positioning pad module displays cursor positioning padsin the predicted locations. For example, a cursor positioning pad 550 isdisplayed at or associated with a location corresponding to the secondcoordinate pair, and a cursor positioning pad 554 is displayed at orassociated with a location corresponding to the third coordinate pair.Similarly, a cursor positioning pad 558 is displayed at or associatedwith a location corresponding to the fourth coordinate pair.

In some embodiments, a graphical user interface element may be provided(not shown) which a user can successively press, click, or otherwiseactivate having the effect of cycling a cursor from one cursorpositioning pad to another is some specified order.

In some embodiments, a multi-dimensional coordinate space may beconsidered a multi-dimensional matrix, where different levels of thestructured object correspond to respective elements of the matrix.

In an embodiment, the cursor positioning pad module is configured todetermine a current level in the hierarchy at which the current inputposition (e.g., the current position of the cursor) is located, and thendetermine one or more predictions of one or more locations only inlevels above the current level in the hierarchy to which a user may wishto navigate the input position. In another embodiment, the cursorpositioning pad module is configured to determine a current level in thehierarchy at which the current input position (e.g., the currentposition of the cursor) is located, and then determine one or morepredictions of one or more locations only in levels above the currentlevel in the hierarchy, or levels in the hierarchy equivalent to thecurrent level, to which a user may wish to navigate the input position.In another embodiment, the cursor positioning pad module is configuredto determine a current level in the hierarchy at which the current inputposition (e.g., the current position of the cursor) is located, and thendetermine one or more predictions of one or more locations only inlevels different than the current level in the hierarchy, includinglevels in the hierarchy equivalent to the current level, to which a usermay wish to navigate the input position. Next, the cursor positioningpad module displays one or more cursor positioning pads at the predictedone or more locations.

Techniques such as described above can be used in other types ofapplications. For example, similar techniques can be used in spreadsheetapplications. For example, cursor positioning pads can be utilized topermit navigating within an input expression to be entered into, oralready within, a cell of the spreadsheet. The spreadsheet applicationmay be configured to predict one or more likely positions within theinput expression to which the user may wish to move the current inputlocation (as indicated by a cursor), and such predictions may begenerated based on rules such as described above or rules more specificto spreadsheet applications, in an embodiment.

As another example, similar techniques can be used in word processingapplications. For example, cursor positioning pads can be utilized topermit navigating a cursor within a paragraph, to move the cursor withinor outside of brackets or pairs of quotation marks, to navigate betweennested brackets or quotation marks, etc. In an embodiment, the wordprocessing application may be configured to predict one or more likelypositions within a document to which the user may wish to move thecurrent input location (as indicated by a cursor), and such predictionsmay be generated based on rules such as described above or rules morespecific to word processing applications. For example, if the wordprocessing application is configured to detect misspellings or othererrors, a rule may specify that a user is likely to position a cursor atthe error (e.g., to the right of the error, to the left of the error,etc.), in an embodiment. Regarding such rules, there may be differentrules for different types of errors, such as a first predicted cursorplacement rule for misspellings and a second predicted cursor placementrule for punctuation errors.

In an embodiment, a sentence within a word processing document may beconsidered a structured object. For example, brackets in a sentence maybe treated in a manner similar to the example mathematical expressionsdescribed above. As another example, quotations may be treated asbrackets in a manner similar to the example mathematical expressionsdescribed above. In an embodiment, a word processing document may beconsidered having a multidimensional hierarchy, where sentences are atequivalent first levels, paragraphs are at equivalent second levels,sub-headings are at equivalent third levels, headings are at equivalentfourth levels, etc., where the first levels are below the second levels;the second levels are below the third levels; and the third levels arebelow the fourth levels. In an embodiment, the word processingapplication may be configured to predict one or more likely positionswithin a document to which the user may wish to move the current inputlocation (as indicated by a cursor), and such predictions may begenerated based on rules such as described above or rules more specificto word processing applications. For example, in an embodiment, thecursor positioning pad module is configured to determine a current levelin the hierarchy at which the current input position (e.g., the currentposition of the cursor) is located, and then determine one or morepredictions of one or more locations only in levels above the currentlevel in the hierarchy to which a user may wish to navigate the inputposition. As an example, if a cursor is located within a sentence of aparagraph, cursor positioning pads may be located at one or more of (i)a beginning and/or an end of the paragraph, (ii) beginnings and/orendings of other paragraphs, (iii) beginnings and/or endings ofheadings, etc., according to an embodiment.

In an embodiment, code or data in a programming language may beconsidered a structured object. For example, blocks of source codedelimited by brackets or whitespace may be treated in a manner similarto the mathematical expressions described above. In an embodiment,source code being edited via a text-editor may be considered to have amultidimensional hierarchy, where lines and columns are considered to bematrix coordinates. In an embodiment, the text editor may be configuredto predict one or more likely positions within the code to which theuser may wish to move the current input location (as indicated by thecursor), and such predictions may be generated by rules as describedabove or by rules more specific to text editing of source code. Forexample, in an embodiment, a text editor may be configured to insertcursor positioning pads in place of formal parameters upon an event suchas the insertion, by the user, of a specific textual pattern such as afunction definition. A text editor could be configured, in anembodiment, to insert cursor positioning pads depending upon thestructure of the computer program being edited. For example, if a cursoris located in the first function of a class that contains three functiondefinitions, then a text editor could be configured, in an embodiment,to attach cursor positioning pads to each of the other two functions. Inaddition to placing a positioning pad based upon program context, acursor positioning pad module could be configured to insert positioningpads based on program execution, for example, by placing a positioningpad at the end of a line in which an error in syntax has been discoveredby a code parser or as the result of compilation or interpretation.

Although examples described above were in the context of entry of datasuch as text into an expression, similar techniques may be utilized inother contexts that do not necessarily involve entering data into anexpression. For example, similar techniques can be used in the contextof navigating a structured object. For instance, in an embodiment,positioning pads can be utilized to facilitate navigating a filestructure having folders, sub-folders, and files stored within foldersand/or sub-folders. For instance, positioning pads may be utilized, whenthe file structure is displayed via a display device, to select, open,and/or close folders or sub-folders, select and/or open files, etc.,according to an embodiment. In this example, positioning pads may beconsidered to facilitate moving a position of interest on the structuredobject (e.g., the file structure).

FIG. 6 is a flow diagram of an example method 600 for facilitatingmovement of a position of interest (e.g., indicated by a cursor) on astructured object displayed via a display device of, or coupled to, acomputing device, according to an embodiment. In an embodiment, themethod 600 is implemented by the device 100 of FIG. 1, and the method600 will be described with reference to FIGS. 1, 3A, and 3B forillustrative purposes. In other embodiments, however, the method isimplemented by another suitable device and/or in conjunction with othertypes of structured objects.

At block 604, a structured object is displayed via the display device,where the structured object has a plurality of levels in a hierarchy.For example, the expression 308 may be displayed on the display device116, where the expression 308 has a plurality of levels in a hierarchyas discussed above.

At block 608, the structured object is analyzed to determine pluralityof levels. For example, the cursor positioning module executed by theprocessor 104, or some other suitable module, analyzes the expression308 to determine the plurality of levels in the hierarchy as discussedabove. For example, in the expression 308, the hierarchy may include afirst level within the parentheses 316, a second level outside of theparentheses 316 and within the parentheses 324, and a third leveloutside of the parentheses 324. In an embodiment, the third level isabove the second level in the hierarchy, and the second level is abovethe first level in the hierarchy.

At block 612, the current level in the hierarchy in which the positionof interest is currently located is determined. For example, the cursorpositioning module executed by the processor 104, or some other suitablemodule, determines the current level of a current input position in theexpression 308, as indicated by the cursor 332. In FIG. 3A, the currentinput position, as indicated by the cursor 332, is located in the firstlevel. In FIG. 3B, the current input position, as indicated by thecursor 332, is located in the second level of the hierarchy.

At block 616, one or more predicted locations in one or more otherlevels in the hierarchy (i.e., levels different than the current level)to which a user may choose to navigate the position of interest aredetermined. For example, the cursor positioning module executed by theprocessor 104, or some other suitable module, determines the one or morepredicted locations based on the determination of the current level. Inthe scenario illustrated in FIG. 3A, two predicted locations in thesecond level and the third level are determined. In the scenarioillustrated in FIG. 3B, a predicted location in the third level isdetermined, in an embodiment. In the scenario illustrated in FIG. 3B,multiple predicted locations in the first level and/or the third levelare determined, in an embodiment.

Predictions of likely locations to which a user may navigate theposition of interest may be generated based on one or more of (i) thecurrent location of the position of interest, (ii) the current level inwhich the position of interest is currently located, (iii)characteristics of the structured object, (iv) the current structure ofthe structured object (e.g., if the structure can change over time), (v)the hierarchy, etc. For example, generation of predicted locations mayinclude applying rules. For example, a first rule may be that, when theposition of interest is located within the current level, the user willlikely wish to move the position of interest to one or more levels inthe hierarchy different than the current level. As another example, asecond rule may be that, when the position of interest is located in thecurrent level, the user will likely wish to move the cursor only to oneor more higher levels (i.e., one or more levels above the current level)in the hierarchy, i.e., not to one or more lower levels in thehierarchy. As another example, a third rule may be that, when theposition of interest is located in the current level, the user willlikely wish to move the cursor only to one or more lower levels (i.e.,one or more levels below the current level) in the hierarchy, i.e., notto one or more higher levels in the hierarchy.

At block 620, one or more positioning pads are displayed at, orassociated with, the one or more predicted locations determined at block616. For example, the cursor positioning module executed by theprocessor 104, or some other suitable module, causes the cursorpositioning pad 336 and/or the cursor positioning pad 340 to bedisplayed on the display device 116.

At block 624, when activation of a positioning pad is detected, theposition of interest is moved to the location at, or associated with,the activated positioning pad. Additionally, when activation of apositioning pad is detected, the activated positioning pad may not bedisplayed. For example, when the cursor positioning pad 336 in FIG. 3Ais activated, the cursor 332 is moved to the location of the cursorpositioning pad 336 and the cursor positioning pad 336 is no longerdisplayed, as illustrated in FIG. 3B.

In some embodiments, block 624 may include ending display of positioningpads corresponding to levels in the hierarch below the new currentlevel. In some embodiments, block 624 may include continuing to displaypositioning pads corresponding to levels in the hierarch above the newcurrent level.

Blocks 612, 616, 620, and 624 may be repeated as the position ofinterest is moved to different locations on the structured object, forexample via activation of positioning pads or by other means, accordingto some embodiments. Block 608 may also be repeated if and when thestructured object changes, according to some embodiments.

FIGS. 7A and 7B illustrate a flow diagram of an example method 800 formoving a cursor on a display of a computing device, according to anembodiment. In an embodiment, the method 800 is implemented by thedevice 100 of FIG. 1, and the method 800 will be described withreference to FIG. 1 for illustrative purposes. In other embodiments,however, the method is implemented by another suitable device.

At block 804, an input field is displayed on a display device, whereinthe input field includes at least a first area, and a second area. Theinput field may be for inputting an expression to be evaluated by anapplication, such as a calculator application, a spreadsheetapplication, etc. The display device is associated with a touch screen.At block 808, a cursor is displayed in the input field.

At block 812, when the cursor is located within the first area of theinput field, a first cursor positioning pad associated with the secondarea of the input field is displayed. The first cursor positioning padmay be displayed in the second area or otherwise visually associatedwith the second area. The first cursor positioning pad is for enabling auser to move the cursor out of the first area of the input field andinto the second area of the input field. The first cursor positioningpad may be displayed in response to predicting that a user is likely toreposition the cursor to the second area of the input field. In anembodiment, first cursor positioning pad may be displayed in accordancewith one or more rules, such as described above, related to predictingwhere a user is likely to reposition the cursor.

At block 816, activation of the first cursor positioning pad isdetected. At block 820, in response to detecting activation of the firstbutton, the cursor is moved from the first area of the input field andinto the second area of the input field. At block 824, the first cursorpositioning pad is no longer displayed. For example, the first cursorpositioning pad is no longer displayed in response to detecting that thecursor is in the second area, in response to detecting activation of thefirst cursor positioning pad, etc., in various embodiments.

At block 828, when the cursor is located outside of the first area, asecond cursor positioning pad is displayed within or otherwise visuallyassociated with the first area. The second cursor positioning pad is toenable moving the cursor to within the first area. The second cursorpositioning pad may be displayed in response to predicting that a useris likely to reposition the cursor to the first area of the input field.In an embodiment, second cursor positioning pad may be displayed inaccordance with one or more rules, such as described above, related topredicting where a user is likely to reposition the cursor.

At block 832, activation of the second cursor positioning pad isdetected. At block 836, in response to detecting activation of thesecond cursor positioning pad, the cursor is moved into the first areaof the input field. At block 840, the second cursor positioning pad isno longer displayed. For example, the second cursor positioning pad isno longer displayed in response to detecting that the cursor is in thefirst area, in response to detecting activation of the second cursorpositioning pad, etc., in various embodiments.

FIGS. 8A and 8B illustrate an example display 900 that may be displayedon a display device by an application such as the calculator applicationdescribed above. The display 900 includes an input expression 904. Theinput expression 904 has a first area 908 that corresponds to anexponent of the expression 904, and a second area 912 to the right ofthe expression and outside of the exponent.

The expression 904 is a structured object having a plurality of levelsin a hierarchy. For example, the first area 908 may correspond to afirst level, and the second area 912 may correspond to a second level.The second level is above the first level in the hierarchy, in anembodiment.

A current input location is indicated by a cursor 916. As illustrated inFIG. 8A, the current input location is in the first area 908, i.e., inthe first level of the hierarchy. A cursor positioning pad 920 isdisplayed in the second level to the right of the expression 904.

If the current input location, represented by the cursor 916, is withinthe first area 908 (and in the first level in the hierarchy) and theuser desires to move the current input location to within the secondlevel, the user may press the cursor positioning pad 920. In response tothis press, the calculator application may determine that the userselected the cursor positioning pad 920 in a manner such as describedabove. In response, the calculator application recognizes the user inputand moves the current input location, represented by the cursor 916,outside of the first area 908 to within the second level in thehierarchy, in the area 912. When the cursor is within the second levelof the hierarchy of the structured expression 904, the cursorpositioning pad 920 is no longer displayed.

FIG. 8B illustrates the display 900 after the user has selected thecursor positioning pad 920. As can be seen in FIG. 8B, the cursorpositioning pad 920 is no longer displayed (e.g., it is removed from thedisplay 900). Additionally, the calculator application caused thecurrent input location to be moved to outside of the first area 908 (inthe first level of the hierarchy) to within the second area 912 (in thesecond level of the hierarchy) of the input expression, and inparticular, to a location to the right of the expression 904.

In some embodiments, techniques for assuming that a user wishes to movethe position of interest, without the user first selecting the cursorpositioning pad, may be utilized. For instance, referring again to FIG.8A, when the user enters a next input and the cursor 916 is located asindicated in FIG. 8A, the next input may be analyzed to determinewhether the next input should be inserted into the expression 904 in thefirst area or level 908 or in the area or level 912. In someembodiments, heuristics are utilized to determine in which area or levela next input should be inserted. For example, it may be generallyobserved that exponents entered by users tend to have only one term.Thus, in some embodiments in which the position of interest is within anarea corresponding to an exponent, the next input may be analyzed todetermine whether the next input will result in the exponent havingmultiple terms. For example, referring to FIG. 8A, if the next input is“+”, this input would result in the exponent of the expression 904having multiple terms. Thus, it is assumed that the user intended thatthe “+” should be entered in the area 912. FIG. 8C illustrates thedisplay 900 after the user has entered “+” and without the user firstselecting the cursor positioning pad 920, according to an embodiment.The “+” was inserted in the area 912, and the cursor 916 was moved tothe area 912. Additionally, the pad 920 is removed from the display 900.

In an embodiment, if the user did not intend for the next input to beinserted in the second area 912, the user may select a “backspace” key,a “delete” key, or another suitable key, pad, etc., to cause theinsertion of the next input in the second area 912 to be “undone” and,optionally, insert the next input in the first area 908. For example,FIG. 8D illustrate the display 900 after the user has selected the“backspace” key, the “delete” key, or the other suitable key, pad, etc.,as described above, according to an embodiment. The “+” has been movedfrom the second area 912 to the first area 908. Additionally, the cursor916 has been moved from the second area 912 to the first area 908.Further, the cursor positioning pad 920 is now displayed in the secondarea 912.

FIG. 9A illustrates an example display 950 that may be displayed on adisplay device by an application such as the calculator applicationdescribed above. The display 950 includes an input expression 954. Theinput expression 954 has a first area 958 that corresponds to anexponent of the expression 954, and a second area 962 to the right ofthe expression and outside of the exponent.

The expression 954 is a structured object having a plurality of levelsin a hierarchy. For example, the first area 958 may correspond to afirst level, and the second area 962 may correspond to a second level.The second level is above the first level in the hierarchy, in anembodiment.

A current input location is indicated by a cursor 966. As illustrated inFIG. 9A, the current input location is in the first area 958, i.e., inthe first level of the hierarchy. A cursor positioning pad 970 isdisplayed in the second level to the right of the expression 954.

If the current input location, represented by the cursor 966, is withinthe first area 958 (and in the first level in the hierarchy) and theuser desires to move the current input location to within the secondlevel, the user may press the cursor positioning pad 970. In response tothis press, the calculator application may determine that the userselected the cursor positioning pad 970 in a manner such as describedabove. In response, the calculator application recognizes the user inputand moves the current input location, represented by the cursor 966,outside of the first area 958 to within the second level in thehierarchy, in the area 962. When the cursor is within the second levelof the hierarchy of the structured expression 954, the cursorpositioning pad 970 is no longer displayed.

When the user enters a next input and the cursor 966 is located asindicated in FIG. 9A, the next input may be analyzed to determinewhether the next input should be inserted into the expression 954 in thefirst area or level 958 or in the area or level 962. As discussed above,in some embodiments, heuristics are utilized to determine in which areaor level a next input should be inserted. Unlike the example discussedwith respect to FIGS. 8A, 8C, and 8D, the user began the exponent with aleft parenthesis. This may indicate, for the example, that the user mayintend for the exponent to be structurally complex, e.g., that theexponent will have multiple terms. Thus, unlike the example discussedwith respect to FIGS. 8A, 8C, and 8D, if the next input is “+”, it maybe assumed that the user intended that the “+” should be entered in thearea 958, i.e., as part of the exponent. FIG. 9B illustrates the display950 after the user has entered “+”, according to an embodiment. The “+”was inserted in the area 958, and the cursor 966 remains in the area958.

FIG. 9C illustrates the display 950 after the user has entered a rightparenthesis within the area 908. This may indicate, for the example,that the user is finished with the exponent of the expression 954. Thus,it may be assumed that the user intends for the next input to beinserted in the area 962. As a result of this assumption, the cursor 966was moved to the area 962, and the pad 970 is removed from the display950.

In an embodiment, if the user did not intend for the next input to beinserted in the second area 962, the user may select a “backspace” key,a “delete” key, or another suitable key, pad, etc., to cause themovement of the cursor 966 to the second area 962 to be “undone”. Forexample, FIG. 9D illustrate the display 950 after the user has selectedthe “backspace” key, the “delete” key, or the other suitable key, pad,etc., as described above, according to an embodiment. The cursor 966 hasbeen moved from the second area 962 to the first area 958, and thecursor positioning pad 970 is now displayed in the second area 962.

In some embodiments, the next input is analyzed to determine ifautomatic movement of the position of interest to the next level withinthe structured input expression, without the user first selecting anpositioning pad, will likely result in requiring less user input ascompared to the user using the positioning pad to move the position ofinterest to the next level. For example, the automatic movement of theposition of interest discussed with respect to FIGS. 8A and 8C wouldresult in the expression 904 as illustrated in FIG. 8C with only oneuser input, i.e., the user entering “+”. On the other hand, the userfirst pressing the landing pad 920 and then entering “+” would alsoresult in the expression 904 as illustrated in FIG. 8C, but wouldrequire two user inputs: pressing the landing pad 920 and then entering“+”. Similarly, the automatic movement of the position of interestdiscussed with respect to FIGS. 9A-9C would result in the expression 954and cursor position as illustrated in FIG. 9C with only one user input,i.e., the user entering “)”. On the other hand, the user entering “)”and then pressing the landing pad 970 would also result in theexpression 954 and cursor position as illustrated in FIG. 9C, but wouldrequire two user inputs: entering “)” and pressing the landing pad 970.In some embodiments, the next input is analyzed using heuristicsconfigured to determine if automatic movement of the position ofinterest to the next level within the structured input expression,without the user first selecting an positioning pad, will likely resultin requiring less user input as compared to the user using thepositioning pad to move the position of interest to the next level.

FIGS. 10A-10C illustrate an example display 1000 that may be displayedon a display device by an application such as the calculator applicationdescribed above. The display 1000 includes an expression 1004. Theexpression 1004 may be an input expression, for example. In someembodiments, the expression 1004 may be an output expression such as anexpression generated by the calculator application in response to aninput expression and/or as a result of performing an operation on aninput expression, for example. Example techniques for selecting aportion of the expression 1000 or the entire expression 1000 aredescribed with reference to FIGS. 10A-10C. In some embodiments, suchselection techniques can be utilized in combination with one or more ofthe cursor positioning techniques described above. In other embodiments,such selection techniques can be utilized without the cursor positioningtechniques described above.

The expression 1004 is a structured object having a plurality of levelsin a hierarchy. For example, a first area 1008 may correspond to a firstlevel, and a second area 1012 may correspond to a second level. Thesecond level is above the first level in the hierarchy, in anembodiment.

In various embodiments, which portion of the expression 1004 is to beselected in response to a user input (e.g., a user input indicating aselection-type of input) is determined based on where on the expression1004 the user input is directed. For example, a calculator applicationas described above or another suitable application may make thedetermination. The user input indicating a selection type of input maybe any suitable input such as a touchscreen press, a touchscreen presssustained for a suitable amount of time (e.g. 2 seconds), a right mousekey selection while a mouse key is over the expression 1004, etc.

FIG. 10B illustrates the display 100 generated by the application inresponse to the application detecting a selection-type user inputdirected to the first area 1008, i.e., in the first level of thehierarchy. For example, a selection-type user input corresponding to atouchscreen press in the first area 1008 may be detected.

The application has selected a portion of the expression correspondingto the first level, while other portions of the expression 1004 are notselected. In particular, because the selection-type user input wasdirected to the first area 10008 which corresponds to the first level ofthe hierarchy, and because the first level of the hierarchy is below thesecond level, a portion of the expression corresponding to the secondlevel and outside of the first level is not selected. The applicationmay indicate the selection of the portion by highlighting the portion,for example, and/or using another suitable technique. In an embodiment,the application may additionally display markers 1016 which indicate theextent of the selection. In an embodiment, a user may be able to changewhich portion of the expression and/or the extent of the selection bymoving one or both of the markers 1016.

In an embodiment, the application displays a user interface 1020 topermit the user to take an action with respect to the selection, such asi) copy the selection to a clipboard, and/or ii) delete the selectionfrom the expression.

FIG. 10C illustrates the display 100 generated by the application inresponse to the application detecting a selection-type user inputdirected to the second area 1012, i.e., in the second level of thehierarchy. For example, a selection-type user input corresponding to atouchscreen press in the second area 1012 may be detected.

The application has selected a portion of the expression correspondingto both the second level and the first level. In particular, because theselection-type user input was directed to the second area 1012 whichcorresponds to the second level of the hierarchy, and because the firstlevel of the hierarchy is below the second level, the portion of theexpression corresponding to the first level is also selected. Theapplication may indicate the selection of the portion by highlightingthe portion, for example, and/or using another suitable technique. In anembodiment, the application may additionally display markers 1016 whichindicate the extent of the selection. In an embodiment, a user may beable to change which portion of the expression and/or the extent of theselection by moving one or both of the markers 1016.

In one embodiment, a method for moving a cursor displayed via a displaydevice of a computing device includes displaying, via the displaydevice, an input field in which an expression can be entered, whereinthe input field includes a first area and a second area. The method alsoincludes displaying, via the display device, a cursor within the inputfield, the cursor indicating a location at which user input will next beentered within the expression. Additionally, the method includes, whenthe cursor is located within the first area, displaying, via the displaydevice, a first cursor positioning pad associated with the second area,wherein the first cursor positioning pad is configured to enable movingthe cursor out of the first area and into the second area. Further, themethod includes detecting, with the computing device, activation of thefirst cursor positioning pad by a user, and in response to detectingactivation of the first cursor positioning pad, moving the cursor,displayed via the display device, from the first area to the secondarea. Still further, the method includes, when the cursor is in thesecond area, no longer displaying the first cursor positioning pad viathe display device.

In another embodiment, a non-transient, tangible, computer readablestorage medium or media has stored thereon machine readable instructionsthat, when executed by a processor of a computing device, cause theprocessor to implement the method described in the preceding paragraph.

In yet another embodiment, a computing device comprises a displaydevice, a user input device, and one or more processors. One or morememories and/or computer readable storage devices are coupled to the oneor more processors. The one or more memories have stored thereon machinereadable instructions that, when executed by the one or more processors,cause the one or more processors to implement the method described inthe preceding paragraph.

In various other embodiments, the method, computer readable storagemedium or media, and/or the computing device may comprise one or more ofthe following.

The first cursor positioning pad is displayed in the second area.

The first cursor positioning pad is displayed at a location to which thecursor is to be moved in response to detecting activation of the firstcursor positioning pad.

The first area corresponds to an area within a first pair of bracketsdisplayed in the input field, and the second area corresponds to an areawithin a second pair of brackets displayed in the input field.

The first pair of brackets is located within the second pair of bracketsand the second area corresponds to an area both (i) within the secondpair of brackets and (ii) outside of the first pair of brackets.

After moving the cursor from the first area to the second area, and whenthe cursor is located outside of the first area, a second cursorpositioning pad associated with the first area is displayed, via thedisplay device, wherein the second cursor positioning pad is to enablemoving the cursor to within the first area; activation of the secondcursor positioning pad is detected with the computing device; inresponse to detecting activation of the second cursor positioning pad,the cursor, displayed via the display device, is moved into the firstarea; and, when the cursor is in the first area, the second cursorpositioning pad is no longer displayed via the display device.

The second cursor positioning pad is displayed in the first area.

The second cursor positioning pad is displayed at a location to whichthe cursor is to be moved in response to detecting activation of thesecond cursor positioning pad.

It is predicted, with the computing device, that a user likely will movethe cursor to a location in the second area; wherein displaying thefirst cursor positioning pad is in response to predicting, with thecomputing device, that the user likely will move the cursor to thesecond area.

Predicting that the user likely will move the cursor to the location inthe second area is based on a structure of an input expression in theinput field.

In another embodiment, a method for facilitating movement of a positionof interest displayed via a display device includes: displaying, via thedisplay device, a structured object having a plurality of levels in ahierarchy or corresponding to a multi-dimensional coordinate space;analyzing, with one or more processors, the structured object todetermine the plurality of levels, including determining a first leveland a second level in the plurality of levels; determining, with one ormore processors, which level in the plurality of levels the position ofinterest is currently located; and when it is determined that theposition of interest is currently located in the first level:determining, with the one or more processors, a first next location inthe second level of the object based on the determination that a currentlocation of the position of interest is in the first level, the firstnext location being a prediction of where the user will choose to movethe position of interest subsequently from the current location,displaying, via the display device, a first positioning padcorresponding to the first next location, wherein the first positioningpad is to enable moving the position of interest to the first nextlocation, and when activation of the first positioning pad is detected,(i) moving the position of interest from the current location in thefirst level to the first next location in the second level, and (ii) nolonger displaying the first positioning pad via the display device.

In another embodiment, the method further includes: analyzing, with oneor more processors, a user input to be inserted in the structured objectto determine whether the position of interest should be moved from thecurrent location to the first next location in the second level; andwhen it is determined that the position of interest should be moved fromthe current location to the first next location in the second level, (i)moving the position of interest from the current location to the firstnext location in the second level, and (ii) no longer displaying thefirst positioning pad via the display device.

In another embodiment, the method further includes, after moving theposition of interest from the current location to the first nextlocation in the second level: receiving further user input indicatingthe position of interest should not have been moved to the first nextlocation in the second level; and moving, with one or more processors,the position of interest from the second level back to the first level.

In another embodiment, a non-transient, tangible, computer readablestorage medium or media has stored thereon machine readable instructionsthat, when executed by a processor of a computing device, cause theprocessor to implement any of the methods described in the precedingthree paragraphs.

In yet another embodiment, a computing device comprises a displaydevice, a user input device, and one or more processors. One or morememories and/or computer readable storage devices are coupled to the oneor more processors. The one or more memories have stored thereon machinereadable instructions that, when executed by the one or more processors,cause the one or more processors to implement the method described inthe preceding four paragraphs.

At least some of the various blocks, operations, and techniquesdescribed above may be implemented utilizing hardware, a processorexecuting firmware instructions, a processor executing softwareinstructions, or any combination thereof. When implemented utilizing aprocessor executing software or firmware instructions, the software orfirmware instructions may be stored in any tangible, non-transitory,computer readable memory such as a magnetic disk, an optical disk, aRAM, a ROM, a flash memory, etc. The software or firmware instructionsmay include machine readable instructions that, when executed by theprocessor, cause the processor to perform various acts.

When implemented in hardware, the hardware may comprise one or more ofdiscrete components, an integrated circuit, an application-specificintegrated circuit (ASIC), etc.

While the present invention has been described with reference tospecific examples, which are intended to be illustrative only and not tobe limiting of the invention, it will be apparent to those of ordinaryskill in the art that changes, additions and/or deletions may be made tothe disclosed embodiments without departing from the spirit and scope ofthe invention.

What is claimed is:
 1. A method, comprising: determining, at one or moreprocessors, in which level, among a plurality of levels of a structuredobject displayed on a display device, a position of interest iscurrently located, wherein the plurality of levels are in a hierarchy orcorresponding to a multi-dimensional coordinate space, and wherein theplurality of levels includes a first level and a second level; and inresponse to the one or more processors determining that the position ofinterest is currently located in the first level: determining, at theone or more processors and based on the hierarchy or themulti-dimensional coordinate space, a next location in the second levelof the structured object, the next location being a prediction, based onthe hierarchy or the multi-dimensional coordinate space, of where a userwill choose to move the position of interest subsequently from thecurrent location, and generating, at the one or more processors, firstdisplay data that, when displayed by the display device, shows theposition of interest at the next location in the second level.
 2. Themethod of claim 1, wherein: the first display data is generated by theone or more processors in response to the one or more processorsdetermining the next location in the second level of the structuredobject.
 3. The method of claim 1, further comprising: in response to theone or more processors determining that the position of interest iscurrently located in the first level, generating, at the one or moreprocessors, second display data that, when displayed by the displaydevice, shows a positioning pad corresponding to the next location,wherein the positioning pad is to enable the user to move the positionof interest to the next location; wherein the first display data isgenerated by the one or more processors in response to the one or moreprocessors detecting activation, via a user interface device, of thepositioning pad, and wherein the first display data, when displayed bythe display device, no longer shows the positioning pad.
 4. The methodof claim 3, wherein the method further comprises: in response to the oneor more processors detecting activation of the positioning paddetermining, with the one or more processors, a set of one or morecurrently displayed positioning pads, if any, corresponding to one ormore levels in the plurality of levels, if any, above the second levelin the hierarchy; wherein generating the first display data includes, inresponse to the one or more processors detecting activation of thepositioning pad, generating the first display data so that, when thefirst display data is displayed by the display device: the set of one ormore positioning pads corresponding to one or more levels in theplurality of levels, if any, above the second level in the hierarchy areno longer shown, and one or more currently displayed positioning pads,if any, corresponding to one or more levels in the plurality of levels,if any, below the second level in the hierarchy remain shown.
 5. Themethod of claim 3, wherein the method further comprises: in response tothe one or more processors detecting activation of the positioning paddetermining, with the one or more processors, a set of one or morecurrently displayed positioning pads, if any, corresponding to one ormore levels in the plurality of levels, if any, below the second levelin the hierarchy; wherein generating the first display data includes, inresponse to the one or more processors detecting activation of thepositioning pad, generating the first display data so that, when thefirst display data is displayed by the display device: the set of one ormore positioning pads corresponding to one or more levels in theplurality of levels, if any, below the second level in the hierarchy areno longer shown, and one or more currently displayed positioning pads,if any, corresponding to one or more levels in the plurality of levels,if any, above the second level in the hierarchy remain shown.
 6. Themethod of claim 1, further comprising: receiving, at the one or moreprocessors, a selection-type user input corresponding to a selectionposition on the structured object, wherein the selection-type user inputis received via a user interface device; in response to the one or moreprocessors determining that the selection position is within the firstlevel, generating, at the one or more processors, second display datathat, when displayed by the display device, shows a selection by theselection-type user input of contents of the structured object that arewithin the first level and does not show a selection of contents of thestructured object that are within the second level; and in response tothe one or more processors determining that the selection position iswithin the second level, generating, at the one or more processors,third display data that, when displayed by the display device, shows aselection by the selection-type user input of both contents of thestructured object that are within the first level and contents of thestructured object that are within the second level.
 7. The method ofclaim 6, wherein: the second display data, when displayed by the displaydevice, shows the selection of the contents by first display markersthat indicate an extent of the selection that i) corresponds to contentsof the structured object that are within the first level and ii) doesnot include any contents of the structured object that are within thesecond level, and wherein the first display makers are configured toallow the user to change contents of the selection of the structuredobject by moving one or more of the first markers; and the third displaydata, when displayed by the display device, shows the selection of thecontents by second display markers that indicate the extent of theselection that corresponds to contents of the structured object that arewithin both the first level and the second level as having beenhighlighted, and wherein the second display makers are configured toallow the user to change contents of the selection of the structuredobject by moving one or more of the second markers.
 8. An apparatus,comprising: one or more processors; and one or more memory devicescoupled to the one or more processors, the one or more memories storingmachine readable instructions that, when executed by the one or moreprocessors, cause the one or more processors to: determine in whichlevel, among a plurality of levels of a structured object displayed on adisplay device, a position of interest is currently located, wherein theplurality of levels are in a hierarchy or corresponding to amulti-dimensional coordinate space, and wherein the plurality of levelsincludes a first level and a second level, and in response to the one ormore processors determining that the position of interest is currentlylocated in the first level: determine, based on the hierarchy or themulti-dimensional coordinate space, a next location in the second levelof the structured object, the next location being a prediction, based onthe hierarchy or the multi-dimensional coordinate space, of where a userwill choose to move the position of interest subsequently from thecurrent location, and generate first display data that, when displayedby the display device, shows the position of interest at the nextlocation in the second level.
 9. The apparatus of claim 8, wherein theone or more memory devices further store machine readable instructionsthat, when executed by the one or more processors, cause the one or moreprocessors to: generate the first display data in response to the one ormore processors determining the next location in the second level of thestructured object.
 10. The apparatus of claim 8, wherein the one or morememory devices further store machine readable instructions that, whenexecuted by the one or more processors, cause the one or more processorsto: in response to the one or more processors determining that theposition of interest is currently located in the first level, generatesecond display data that, when displayed by the display device, shows apositioning pad corresponding to the next location, wherein thepositioning pad is to enable the user to move the position of interestto the next location; generate the first display data is in response tothe one or more processors detecting activation, via a user interfacedevice, of the positioning pad, and wherein the first display data, whendisplayed by the display device, no longer shows the positioning pad.11. The apparatus of claim 10, wherein the one or more memory devicesfurther store machine readable instructions that, when executed by theone or more processors, cause the one or more processors to: in responseto the one or more processors detecting activation of the positioningpad determine a set of one or more currently displayed positioning pads,if any, corresponding to one or more levels in the plurality of levels,if any, above the second level in the hierarchy; in response to the oneor more processors detecting activation of the positioning pad, generatethe first display data so that, when the first display data is displayedby the display device: the set of one or more positioning padscorresponding to one or more levels in the plurality of levels, if any,above the second level in the hierarchy are no longer shown, and one ormore currently displayed positioning pads, if any, corresponding to oneor more levels in the plurality of levels, if any, below the secondlevel in the hierarchy remain shown.
 12. The apparatus of claim 10,wherein the one or more memory devices further store machine readableinstructions that, when executed by the one or more processors, causethe one or more processors to: in response to the one or more processorsdetecting activation of the positioning pad determine a set of one ormore currently displayed positioning pads, if any, corresponding to oneor more levels in the plurality of levels, if any, below the secondlevel in the hierarchy; in response to the one or more processorsdetecting activation of the positioning pad, generate the first displaydata so that, when the first display data is displayed by the displaydevice: the set of one or more positioning pads corresponding to one ormore levels in the plurality of levels, if any, below the second levelin the hierarchy are no longer shown, and one or more currentlydisplayed positioning pads, if any, corresponding to one or more levelsin the plurality of levels, if any, above the second level in thehierarchy remain shown.
 13. The apparatus of claim 8, wherein the one ormore memory devices further store machine readable instructions that,when executed by the one or more processors, cause the one or moreprocessors to: receive a selection-type user input corresponding to aselection position on the structured object, wherein the selection-typeuser input is received via a user interface device; in response to theone or more processors determining that the selection position is withinthe first level, generate second display data that, when displayed bythe display device, shows a selection by the selection-type user inputof contents of the structured object that are within the first level anddoes not show a selection of contents of the structured object that arewithin the second level; and in response to the one or more processorsdetermining that the selection position is within the second level,generate third display data that, when displayed by the display device,shows a selection by the selection-type user input of both contents ofthe structured object that are within the first level and contents ofthe structured object that are within the second level.
 14. Theapparatus of claim 13, wherein: the second display data, when displayedby the display device, shows the selection of the contents by firstdisplay markers that indicate an extent of the selection that i)corresponds to contents of the structured object that are within thefirst level and ii) does not include any contents of the structuredobject that are within the second level, and wherein the first displaymakers are configured to allow the user to change contents of theselection of the structured object by moving one or more of the firstmarkers; and the third display data, when displayed by the displaydevice, shows the selection of the contents by second display markersthat indicate the extent of the selection that corresponds to contentsof the structured object that are within both the first level and thesecond level as having been highlighted, and wherein the second displaymakers are configured to allow the user to change contents of theselection of the structured object by moving one or more of the secondmarkers.
 15. The apparatus of claim 13, further comprising: the userinterface device, the user interface device being coupled to the one ormore processors.
 16. The apparatus of claim 8, further comprising: thedisplay device, the display device being coupled to the one or moreprocessors.
 17. One or more tangible, non-transitory computer readablemedia, storing machine readable instructions that, when executed by oneor more processors, cause the one or more processors to: determine inwhich level, among a plurality of levels of a structured objectdisplayed on a display device, a position of interest is currentlylocated, wherein the plurality of levels are in a hierarchy orcorresponding to a multi-dimensional coordinate space, and wherein theplurality of levels includes a first level and a second level; and inresponse to the one or more processors determining that the position ofinterest is currently located in the first level: determine, based onthe hierarchy or the multi-dimensional coordinate space, a next locationin the second level of the structured object, the next location being aprediction, based on the hierarchy or the multi-dimensional coordinatespace, of where a user will choose to move the position of interestsubsequently from the current location, and generate first display datathat, when displayed by the display device, shows the position ofinterest at the next location in the second level.
 18. The one or moretangible, non-transitory computer readable media of claim 17, furtherstoring machine readable instructions that, when executed by the one ormore processors, cause the one or more processors to: generate the firstdisplay data in response to the one or more processors determining thenext location in the second level of the structured object.
 19. The oneor more tangible, non-transitory computer readable media of claim 17,further storing machine readable instructions that, when executed by theone or more processors, cause the one or more processors to: in responseto the one or more processors determining that the position of interestis currently located in the first level, generate second display datathat, when displayed by the display device, shows a positioning padcorresponding to the next location, wherein the positioning pad is toenable the user to move the position of interest to the next location;generate the first display data in response to the one or moreprocessors detecting activation, via a user interface device, of thepositioning pad, and wherein the first display data, when displayed bythe display device, no longer shows the positioning pad.
 20. The one ormore tangible, non-transitory computer readable media of claim 19,further storing machine readable instructions that, when executed by theone or more processors, cause the one or more processors to: in responseto the one or more processors detecting activation of the positioningpad determine a set of one or more currently displayed positioning pads,if any, corresponding to one or more levels in the plurality of levels,if any, above the second level in the hierarchy; in response to the oneor more processors detecting activation of the positioning pad, generatethe first display data so that, when the first display data is displayedby the display device: the set of one or more positioning padscorresponding to one or more levels in the plurality of levels, if any,above the second level in the hierarchy are no longer shown, and one ormore currently displayed positioning pads, if any, corresponding to oneor more levels in the plurality of levels, if any, below the secondlevel in the hierarchy remain shown.
 21. The one or more tangible,non-transitory computer readable media of claim 19, further storingmachine readable instructions that, when executed by the one or moreprocessors, cause the one or more processors to: in response to the oneor more processors detecting activation of the positioning pad determinea set of one or more currently displayed positioning pads, if any,corresponding to one or more levels in the plurality of levels, if any,below the second level in the hierarchy; in response to the one or moreprocessors detecting activation of the positioning pad, generate thefirst display data so that, when the first display data is displayed bythe display device: the set of one or more positioning padscorresponding to one or more levels in the plurality of levels, if any,below the second level in the hierarchy are no longer shown, and one ormore currently displayed positioning pads, if any, corresponding to oneor more levels in the plurality of levels, if any, above the secondlevel in the hierarchy remain shown.
 22. The one or more tangible,non-transitory computer readable media of claim 17, further storingmachine readable instructions that, when executed by the one or moreprocessors, cause the one or more processors to: receive aselection-type user input corresponding to a selection position on thestructured object, wherein the selection-type user input is received viaa user interface device; in response to the one or more processorsdetermining that the selection position is within the first level,generate second display data that, when displayed by the display device,shows a selection by the selection-type user input of contents of thestructured object that are within the first level and does not show aselection of contents of the structured object that are within thesecond level; and in response to the one or more processors determiningthat the selection position is within the second level, generate thirddisplay data that, when displayed by the display device, shows aselection by the selection-type user input of both contents of thestructured object that are within the first level and contents of thestructured object that are within the second level.